#pragma once
#include "PointLabIO/Prerequisites.h"
#include "PointLabIO/BaseIO.h"
#include "PointLabIO/Factory.h"

namespace PointLabIO
{
	class POINTLABIO_EXPORT AsciiIO :public PointLabIO::BaseIO
	{
	public:
		AsciiIO();
		~AsciiIO();

		virtual bool importSupported() const override;
		virtual bool exportSupported() const override;

		virtual PointLabIO::POINTLAB_FILE_ERROR loadFile(const std::string fileName, PointLabCore::Entity*& entity, PointLabIO::Options& options) override;
		virtual PointLabIO::POINTLAB_FILE_ERROR saveToFile(const std::string fileName, PointLabCore::Entity* entity, PointLabIO::Options& options) override;

		virtual std::string fileFilters() const override;
		virtual std::string defaultExtension() const override;

		virtual bool canLoadExtension(std::string upperCaseExt) const override;
		virtual bool canSave(PointLabCore::CLASS_TYPE type) const override;
	};

	extern PointLabIO::AsciiIO AsciiIOInstance;

	POINTLABIO_EXPORT PointLabIO::AsciiIO& AsciiIOHandler();
}
